// +----------------------------------------------
// | @Author: llr <821860835@qq.com>
// +----------------------------------------------
// | @Date:   2019-07-14 20:42:47
// +----------------------------------------------
layui.use(['layer'], function(){
	//ajax删除
	$("a.js-ajax-delete").on("click", function(){
		var $this   = $(this),
	        href    = $this.data('href'),
	        refresh = $this.data('refresh'),
	        message = $this.data('msg');

	    message = message ? message : '确定要删除吗？';

	    layer.confirm(message , {
	    	title 	: '提示' ,
	    	shade 	: 0
	    }, function(response){
	        layer.load(2)
	        $.get(href, function(response){
	            if(response['code'] == 1) {
	                msg(response['msg']);
	                setTimeout(function(){
	                    window.location.href = response['url'];
	                }, 2000)
	            } else {
	                msg(response['msg'], 2000);
	            }
	            layer.closeAll('loading');
	        })
	        layer.closeAll('dialog');
	    })
	})

	//ajax提交
    $('button.js-ajax-submit').on('click', function (e) {
        var btn  = $(this);
        var form = btn.parents('form.js-ajax-form');
        $btn     = btn;

        var action  = $btn.data('action') ? $btn.data('action') : $form.attr('action');

        if (btn.data("loading")) {
            return;
        }

        //批量操作 判断选项
        if (btn.data('subcheck')) {
            btn.parent().find('span').remove();
            if (form.find('input.js-check:checked').length) {
                btn.data('subcheck', false);
            } else {
                $('<span class="color-red">请至少选择一项</span>').appendTo(btn.parent()).fadeIn('fast');
                return false;
            }
        }


        var message = btn.data('msg');

	    layer.confirm(message , {
	    	title 	: '提示' ,
	    	shade 	: 0
	    }, function(response){
	        form.ajaxSubmit({
	        	url: action,
	        	dataType: 'json',
	        	beforeSubmit: function(){
	        		$btn.data("loading", true);
                    var text = $btn.text();

                    //按钮文案、状态修改
                    $btn.text(text + '...').prop('disabled', true).addClass('disabled');
	        	},
	        	success: function(response){
	        		var text = $btn.text();

                    //按钮文案、状态修改
                    $btn.removeClass('disabled').prop('disabled', false).text(text.replace('...', '')).parent().find('span').remove();
	        		
	        		layer.closeAll('dialog');

		            if(response['code'] == 1) {
		                msg(response['msg']);
		                setTimeout(function(){
		                    window.location.href = response['url'];
		                }, 2000)
		            } else {
		                msg(response['msg'], 2000);
		            }
	        	}
	        })
	    })
	    return false;
    });

    /*复选框全选(支持多个，纵横双控全选)。
     *实例：版块编辑-权限相关（双控），验证机制-验证策略（单控）
     *说明：
     *	"js-check"的"data-xid"对应其左侧"js-check-all"的"data-checklist"；
     *	"js-check"的"data-yid"对应其上方"js-check-all"的"data-checklist"；
     *	全选框的"data-direction"代表其控制的全选方向(x或y)；
     *	"js-check-wrap"同一块全选操作区域的父标签class，多个调用考虑
     */

    if ($('.js-check-wrap').length) {
        var total_check_all = $('input.js-check-all');

        //遍历所有全选框
        $.each(total_check_all, function () {
            var check_all = $(this),
                check_items;

            //分组各纵横项
            var check_all_direction = check_all.data('direction');
            check_items             = $('input.js-check[data-' + check_all_direction + 'id="' + check_all.data('checklist') + '"]').not(":disabled");

            //点击全选框
            check_all.change(function (e) {
                var check_wrap = check_all.parents('.js-check-wrap'); //当前操作区域所有复选框的父标签（重用考虑）

                if ($(this).prop('checked')) {
                    //全选状态
                    check_items.prop('checked', true);

                    //所有项都被选中
                    if (check_wrap.find('input.js-check').length === check_wrap.find('input.js-check:checked').length) {
                        check_wrap.find(total_check_all).prop('checked', true);
                    }

                } else {
                    //非全选状态
                    check_items.removeProp('checked');

                    check_wrap.find(total_check_all).removeProp('checked');

                    //另一方向的全选框取消全选状态
                    var direction_invert = check_all_direction === 'x' ? 'y' : 'x';
                    check_wrap.find($('input.js-check-all[data-direction="' + direction_invert + '"]')).removeProp('checked');
                }

            });

            //点击非全选时判断是否全部勾选
            check_items.change(function () {

                if ($(this).prop('checked')) {

                    if (check_items.filter(':checked').length === check_items.length) {
                        //已选择和未选择的复选框数相等
                        check_all.prop('checked', true);
                    }

                } else {
                    check_all.removeProp('checked');
                }

            });


        });
    }
})